﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using CNCSoft.ErpApps.TMS.myclass;
using Common;

namespace CNCSoft.ErpApps.TMS
{
    public partial class frmCalculateEndDate : Form
    {
        private SqlConnection conn;
        private DataSet ds;
        private CommonClass mine;
        private Calculate cal;
        private DateTime startdate;
        private int tongsongay;

        public frmCalculateEndDate()
        {
            InitializeComponent();
        }

        private void frmCalculateEndDate_Load(object sender, EventArgs e)
        {
            conn = new SqlConnection(GlobalVariable.WSInfo.ConnectionString);
            ds = new DataSet();
            mine = new CommonClass();
            cal = new Calculate();
            LoadControl();
        }

        private void simpleButtonCalculate_Click(object sender, EventArgs e)
        {
            if(cmbNgayTrongTuan.SelectedValue.ToString() == "01")
            {
                EndDate246();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "02")
            {
                EndDate357();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "20")
            {
                EndDate7CN();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "21")
            {
                EndDateMonToFri();
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "01")
            {
                EndDateAfterRest246();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "02")
            {
                EndDateAfterRest357();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "20")
            {
                EndDateAfterRest7CN();
            }
            if (cmbNgayTrongTuan.SelectedValue.ToString() == "21")
            {
                EndDateAfterRestMonToFri();
            }
        }

        #region coding
        private void LoadControl()
        {
            LoadNgayTrongTuan();
            dateEditStartDate.EditValue = DateTime.Now.ToShortDateString();
        }

        private void LoadNgayTrongTuan()
        {
            try
            {
                string sql =
                @"SELECT MaNgayTrongTuan, TenNgayTrongTuan
                    FROM
                    DM_NGAYTRONGTUAN
                    WHERE MaNgayTrongTuan IN ('01', '02', '20', '21')";
                mine.ExecuteDataAdapter(sql, conn, ds, "TableNgayTrongTuan", "MaNgayTrongTuan", "TenNgayTrongTuan", cmbNgayTrongTuan);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDate246()
        {
            try
            {
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDate246(conn, ds, startdate, tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDate);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDateAfterRest246()
        {
            try
            {
                DateTime restdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartRestDate.EditValue));
                DateTime enddate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndDate.EditValue));
                DateTime endrestdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndRestDate.EditValue));
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                //Moi lan thuc hien ta phai gán lại tongsongay bang trong textEditTongNgay
                //do trong ham CalEndDateAfterRest246 thuc hien viec tang tongsongay++
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);

                cal.CalEndDateAfterRest246(conn, ds, restdate, startdate, enddate, endrestdate, 
                    tongsongay, dateEditEndDateAfterRest, ngaytrongtuan, songaytrongtuan);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDate357()
        {
            startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
            tongsongay = Convert.ToInt32(textEditTongNgay.Text);
            string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
            int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

            cal.CalEndDate357(conn, ds, startdate, tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDate);
        }

        private void EndDateAfterRest357()
        {
            try
            {
                DateTime restdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartRestDate.EditValue));
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                DateTime enddate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndDate.EditValue));
                DateTime endrestdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndRestDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDateAfterRest357(conn, ds, restdate, startdate, enddate, endrestdate,
                    tongsongay, dateEditEndDateAfterRest, ngaytrongtuan, songaytrongtuan);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDate7CN()
        {
            try
            {
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDate7CN(conn, ds, startdate, tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDate);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDateAfterRest7CN()
        {
            try
            {
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                DateTime enddate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndDate.EditValue));
                DateTime restdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartRestDate.EditValue));
                DateTime endrestdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndRestDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDateAfterRest7CN(conn, ds, startdate, enddate, restdate, endrestdate,
                    tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDateAfterRest);
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void EndDateMonToFri()
        {
            try
            {
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDateMonToFri(conn, ds, startdate, tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDate);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void EndDateAfterRestMonToFri()
        {
            try
            {
                startdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartDate.EditValue));
                DateTime enddate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndDate.EditValue));
                DateTime restdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditStartRestDate.EditValue));
                DateTime endrestdate = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", dateEditEndRestDate.EditValue));
                tongsongay = Convert.ToInt32(textEditTongNgay.Text);
                string ngaytrongtuan = cmbNgayTrongTuan.SelectedValue.ToString();
                int songaytrongtuan = Convert.ToInt32(textEditSoNgayTrongTuan.Text);

                cal.CalEndDateAfterRestMonToFri(conn, ds, startdate, enddate, restdate, endrestdate,
                                                    tongsongay, ngaytrongtuan, songaytrongtuan, dateEditEndDateAfterRest);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
    }
}